import axios from 'axios'

import { Loading } from 'element-ui'

// 此处开始
let needLoadingRequestCount = 0

function showFullScreenLoading () {
  if (needLoadingRequestCount === 0) {
    startLoading()
  }
  needLoadingRequestCount++
}

function tryHideFullScreenLoading () {
  if (needLoadingRequestCount <= 0) return
  needLoadingRequestCount--
  if (needLoadingRequestCount === 0) {
    endLoading()
  }
}
let loading
function startLoading () {
  loading = Loading.service({

    lock: true,
    text: '加载中…',
    background: 'rgba(0, 0, 0, 0.7)'
  })
}

function endLoading () {
  loading.close()
}

// 2、判断是什么环境 -- 开发环境 -- 生产环境
// 真  ----   开发环境 ---- 反向代理
// 假  ----   生产环境

const isDev = process.env.NODE_ENV === 'development'

// 3、自定义axios
let request = axios.create({
  // 基础请求地址
  baseURL: isDev ? '/io' : 'https://niwotagood.cn'
})
// 4.使用axios的拦截器 --- 请求拦截器 + 响应的拦截器
// 添加请求拦截器
request.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  // 所有的请求都需要的字段，所有的请求过程中可以添加loading效果
  // token
  showFullScreenLoading()
  config.headers['token'] = localStorage.getItem('token') || ''
  return config
})

// 添加响应拦截器
request.interceptors.response.use(function (response) {
  // 对响应数据做点什么
  // 消除请求的loading效果

  tryHideFullScreenLoading()

  return response
})
// 5.暴露axios模块
export default request
